package com.sojson.util.pay.wx.bean;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sojson.base.impl.BaseUtilDto;
import com.sojson.config.exception.TransErrorCode;
import com.sojson.config.exception.bean.Status;

/**
 * 微信V2接口响应Bean
 * 
 * @author liu
 * @date 2021-03-16
 */
public class WxResponseV2 extends BaseUtilDto {

    /***/
    private static final long serialVersionUID = -444894164284969796L;

    /** 商户appid */
    private String appid;
    /** 商户appid */
    private String mchAppid;
    /** 商户号 */
    private String mchid;
    /** 商户号 */
    private String mchId;
    /** 商户密钥 */
    private String mchKey;
    /** 设备号 */
    private String deviceInfo;
    /** 随机字符串 */
    private String nonceStr;
    /** 商户订单号 */
    private String partnerTradeNo;
    /** 商户订单号 */
    private String outTradeNo;
    /** 商户退款单号 */
    private String outRefundNo;
    /** 微信付款单号 */
    private String paymentNo;
    /** 微信订单号 */
    private String transactionId;
    /** 微信退款单号 */
    private String refundId;
    /** 付款成功时间 */
    private String paymentTime;
    /** 二维码链接 */
    private String codeUrl;
    /** 预支付交易会话标识 */
    private String prepayId;
    /** 支付跳转链接 */
    private String wapUrl;
    /** 签名 */
    private String sign;
    /** 加密信息 */
    private String reqInfo;
    /** 退款状态 */
    private String refundStatus;
    /** 退款成功时间 */
    private String successTime;
    /** 退款入账账户 */
    private String refundRecvAccout;
    /** 退款资金来源 */
    private String refundAccount;
    /** 退款发起来源 */
    private String refundRequestSource;
    /** 状态码 */
    @JsonIgnore
    private String returnCode;
    /** 状态信息 */
    @JsonIgnore
    private String returnMsg;
    /** 业务结果 */
    @JsonIgnore
    private String resultCode;
    /** 错误码 */
    @JsonIgnore
    private String errCode;
    /** 错误信息 */
    @JsonIgnore
    private String errCodeDes;
    /** 统一状态Bean */
    private Status cusStatus;

    public WxResponseV2() {}

    /**
     * 成功返回
     * 
     * @param code
     */
    public WxResponseV2(Integer code) {
        this(code, null);
    }

    /**
     * 返回失败
     * 
     * @param code
     * @param msg
     */
    public WxResponseV2(Integer code, String msg) {
        this(new Status(code, msg));
    }

    /**
     * 返回失败
     * 
     * @param transErrorCode
     */
    public WxResponseV2(TransErrorCode transErrorCode) {
        this(new Status(transErrorCode.getCode(), transErrorCode.getMsg()));
    }

    public WxResponseV2(Status status) {
        setCusStatus(status);
    }

    /** 获取商户appid */
    public String getAppid() {
        return appid;
    }

    /** 设置商户appid */
    public void setAppid(String appid) {
        this.appid = appid;
    }

    /** 获取商户appid */
    public String getMchAppid() {
        return mchAppid;
    }

    /** 设置商户appid */
    @JsonProperty("mch_appid")
    @JSONField(name = "mch_appid")
    public void setMchAppid(String mchAppid) {
        this.mchAppid = mchAppid;
    }

    /** 获取商户号 */
    public String getMchid() {
        return mchid;
    }

    /** 设置商户号 */
    public void setMchid(String mchid) {
        this.mchid = mchid;
    }

    /** 获取商户号 */
    public String getMchId() {
        return mchId;
    }

    /** 设置商户号 */
    @JsonProperty("mch_id")
    @JSONField(name = "mch_id")
    public void setMchId(String mchId) {
        this.mchId = mchId;
    }

    /** 获取商户密钥 */
    public String getMchKey() {
        return mchKey;
    }

    /** 设置商户密钥 */
    @JsonProperty("mch_key")
    @JSONField(name = "mch_key")
    public void setMchKey(String mchKey) {
        this.mchKey = mchKey;
    }

    /** 获取设备号 */
    public String getDeviceInfo() {
        return deviceInfo;
    }

    /** 设置设备号 */
    @JsonProperty("device_info")
    @JSONField(name = "device_info")
    public void setDeviceInfo(String deviceInfo) {
        this.deviceInfo = deviceInfo;
    }

    /** 获取随机字符串 */
    public String getNonceStr() {
        return nonceStr;
    }

    /** 设置随机字符串 */
    @JsonProperty("nonce_str")
    @JSONField(name = "nonce_str")
    public void setNonceStr(String nonceStr) {
        this.nonceStr = nonceStr;
    }

    /** 获取商户订单号 */
    public String getPartnerTradeNo() {
        return partnerTradeNo;
    }

    /** 设置商户订单号 */
    @JsonProperty("partner_trade_no")
    @JSONField(name = "partner_trade_no")
    public void setPartnerTradeNo(String partnerTradeNo) {
        this.partnerTradeNo = partnerTradeNo;
    }

    /** 获取商户订单号 */
    public String getOutTradeNo() {
        return outTradeNo;
    }

    /** 设置商户订单号 */
    @JsonProperty("out_trade_no")
    @JSONField(name = "out_trade_no")
    public void setOutTradeNo(String outTradeNo) {
        this.outTradeNo = outTradeNo;
    }

    /** 获取商户退款单号 */
    public String getOutRefundNo() {
        return outRefundNo;
    }

    /** 设置商户退款单号 */
    @JsonProperty("out_refund_no")
    @JSONField(name = "out_refund_no")
    public void setOutRefundNo(String outRefundNo) {
        this.outRefundNo = outRefundNo;
    }

    /** 获取微信付款单号 */
    public String getPaymentNo() {
        return paymentNo;
    }

    /** 设置微信付款单号 */
    @JsonProperty("payment_no")
    @JSONField(name = "payment_no")
    public void setPaymentNo(String paymentNo) {
        this.paymentNo = paymentNo;
    }

    /** 获取微信订单号 */
    public String getTransactionId() {
        return transactionId;
    }

    /** 设置微信订单号 */
    @JsonProperty("transaction_id")
    @JSONField(name = "transaction_id")
    public void setTransactionId(String transactionId) {
        this.transactionId = transactionId;
    }

    /** 获取微信退款单号 */
    public String getRefundId() {
        return refundId;
    }

    /** 设置微信退款单号 */
    @JsonProperty("refund_id")
    @JSONField(name = "refund_id")
    public void setRefundId(String refundId) {
        this.refundId = refundId;
    }

    /** 获取付款成功时间 */
    public String getPaymentTime() {
        return paymentTime;
    }

    /** 设置付款成功时间 */
    @JsonProperty("payment_time")
    @JSONField(name = "payment_time")
    public void setPaymentTime(String paymentTime) {
        this.paymentTime = paymentTime;
    }

    /** 获取二维码链接 */
    public String getCodeUrl() {
        return codeUrl;
    }

    /** 设置二维码链接 */
    @JsonProperty("code_url")
    @JSONField(name = "code_url")
    public void setCodeUrl(String codeUrl) {
        this.codeUrl = codeUrl;
    }

    /** 获取预支付交易会话标识 */
    public String getPrepayId() {
        return prepayId;
    }

    /** 设置预支付交易会话标识 */
    @JsonProperty("prepay_id")
    @JSONField(name = "prepay_id")
    public void setPrepayId(String prepayId) {
        this.prepayId = prepayId;
    }

    /** 获取支付跳转链接 */
    public String getWapUrl() {
        return wapUrl;
    }

    /** 设置支付跳转链接 */
    @JsonProperty("wap_url")
    @JSONField(name = "wap_url")
    public void setWapUrl(String wapUrl) {
        this.wapUrl = wapUrl;
    }

    /** 获取签名 */
    public String getSign() {
        return sign;
    }

    /** 设置签名 */
    public void setSign(String sign) {
        this.sign = sign;
    }

    /** 获取加密信息 */
    public String getReqInfo() {
        return reqInfo;
    }

    /** 设置加密信息 */
    @JsonProperty("req_info")
    @JSONField(name = "req_info")
    public void setReqInfo(String reqInfo) {
        this.reqInfo = reqInfo;
    }

    /** 获取退款状态 */
    public String getRefundStatus() {
        return refundStatus;
    }

    /** 设置退款状态 */
    @JsonProperty("refund_status")
    @JSONField(name = "refund_status")
    public void setRefundStatus(String refundStatus) {
        this.refundStatus = refundStatus;
    }

    /** 获取退款成功时间 */
    public String getSuccessTime() {
        return successTime;
    }

    /** 设置退款成功时间 */
    @JsonProperty("success_time")
    @JSONField(name = "success_time")
    public void setSuccessTime(String successTime) {
        this.successTime = successTime;
    }

    /** 获取退款入账账户 */
    public String getRefundRecvAccout() {
        return refundRecvAccout;
    }

    /** 设置退款入账账户 */
    @JsonProperty("refund_recv_accout")
    @JSONField(name = "refund_recv_accout")
    public void setRefundRecvAccout(String refundRecvAccout) {
        this.refundRecvAccout = refundRecvAccout;
    }

    /** 获取退款资金来源 */
    public String getRefundAccount() {
        return refundAccount;
    }

    /** 设置退款资金来源 */
    @JsonProperty("refund_account")
    @JSONField(name = "refund_account")
    public void setRefundAccount(String refundAccount) {
        this.refundAccount = refundAccount;
    }

    /** 获取退款发起来源 */
    public String getRefundRequestSource() {
        return refundRequestSource;
    }

    /** 设置退款发起来源 */
    @JsonProperty("refund_request_source")
    @JSONField(name = "refund_request_source")
    public void setRefundRequestSource(String refundRequestSource) {
        this.refundRequestSource = refundRequestSource;
    }

    /** 获取状态码 */
    public String getReturnCode() {
        return returnCode;
    }

    /** 设置状态码 */
    @JsonProperty("return_code")
    @JSONField(name = "return_code")
    public void setReturnCode(String returnCode) {
        this.returnCode = returnCode;
    }

    /** 获取状态信息 */
    public String getReturnMsg() {
        return returnMsg;
    }

    /** 设置状态信息 */
    @JsonProperty("return_msg")
    @JSONField(name = "return_msg")
    public void setReturnMsg(String returnMsg) {
        this.returnMsg = returnMsg;
    }

    /** 获取业务结果 */
    public String getResultCode() {
        return resultCode;
    }

    /** 设置业务结果 */
    public void setResultCode(String resultCode) {
        this.resultCode = resultCode;
    }

    /** 获取错误码 */
    public String getErrCode() {
        return errCode;
    }

    /** 设置错误码 */
    @JsonProperty("err_code")
    @JSONField(name = "err_code")
    public void setErrCode(String errCode) {
        this.errCode = errCode;
    }

    /** 获取错误信息 */
    public String getErrCodeDes() {
        return errCodeDes;
    }

    /** 设置错误信息 */
    @JsonProperty("err_code_des")
    @JSONField(name = "err_code_des")
    public void setErrCodeDes(String errCodeDes) {
        this.errCodeDes = errCodeDes;
    }

    /**
     * 获取统一状态Bean
     * 
     * @return
     */
    public Status getCusStatus() {
        return cusStatus;
    }

    /**
     * 设置统一状态Bean
     * 
     * @param status
     */
    public void setCusStatus(Status cusStatus) {
        this.cusStatus = cusStatus;
    }

}